/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.fatecpg.zanotti.acessobanco;

import br.com.fatecpg.zanotti.modelo.Fornecedor;
import javax.swing.*;
import java.sql.*;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;

/**
 * Classe responsável por realizar todas consultas relacionadas a Tabela da janela de Fornecedor.
 *
 * @author F.L. Zanotti
 */
public class conTableFornecedor {
/**
 * Realiza uma consulta para preencher a tabela Fornecedor
 * @param testeTabela
 * @return JTable
 */

    public JTable ConsultaTabelaToda(JTable testeTabela) {
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = AbreConexao.getConexao();

            String query = "SELECT NMFORNECEDOR, CDFORNECEDOR from FORNECEDOR";

            pst = con.prepareStatement(query);

            rs = pst.executeQuery();
            DefaultTableModel modelo = (DefaultTableModel) testeTabela.getModel();
            modelo.setNumRows(0);

            while (rs.next()) {
                String NMFORNECEDOR = rs.getString("NMFORNECEDOR");
                String CDFORNECEDOR = rs.getString("CDFORNECEDOR");

                NMFORNECEDOR = NMFORNECEDOR.trim();
                CDFORNECEDOR = CDFORNECEDOR.trim();

                Vector teste = new Vector();
                teste.addElement(NMFORNECEDOR);
                teste.addElement(CDFORNECEDOR);

                modelo.addRow(teste);


            }
            System.out.println(testeTabela.getRowCount());
            return testeTabela;
        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            try {
                rs.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                pst.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                con.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }


        return null;
    }
/**
 * Realiza uma consulta para preencher a tabela Fornecedor filtrando pelo nome do fornecedor.
 * @param testeTabela
 * @param s
 * @return
 */
    public JTable ConsultaTabelaPorNome(JTable testeTabela, String s) {
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;

        try {
            con = AbreConexao.getConexao();

            String query = "SELECT NMFORNECEDOR, CDCNPJFORNECEDOR from FORNECEDOR" +
                    " WHERE NMFORNECEDOR LIKE '"+s+"%'";



            pst = con.prepareStatement(query);

            rs = pst.executeQuery();
            DefaultTableModel modelo = (DefaultTableModel) testeTabela.getModel();
            modelo.setNumRows(0);

            while (rs.next()) {
                String NMFORNECEDOR = rs.getString("NMFORNECEDOR");
                String CDCNPJFORNECEDOR = rs.getString("CDCNPJFORNECEDOR");



                NMFORNECEDOR = NMFORNECEDOR.trim();
                CDCNPJFORNECEDOR = CDCNPJFORNECEDOR.trim();



                Vector teste = new Vector();
                teste.addElement(NMFORNECEDOR);
                teste.addElement(CDCNPJFORNECEDOR);

                modelo.addRow(teste);;



            }
            System.out.println(testeTabela.getRowCount());
            return testeTabela;
        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException ex) {
                    System.out.println(ex);
                }
            }
            if (pst != null) {
                try {
                    pst.close();
                } catch (SQLException ex) {
                    System.out.println(ex);
                }
            }
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException ex) {
                    System.out.println(ex);
                }
            }
        }
        return null;
    }
       /**
        * Realiza uma consulta para preencher a tabela Fornecedor filtrando pelo CNPJ
        * @param testeTabela
        * @param s
        * @return
        */
    public JTable ConsultaTabelaPorCNPJ(JTable testeTabela, String s) {
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = AbreConexao.getConexao();

            String query = "SELECT NMFORNECEDOR, CDCNPJFORNECEDOR from FORNECEDOR" +
                    " WHERE CDCNPJFORNECEDOR LIKE '"+s+"%'";



            pst = con.prepareStatement(query);

            rs = pst.executeQuery();
            DefaultTableModel modelo = (DefaultTableModel) testeTabela.getModel();
            modelo.setNumRows(0);

            while (rs.next()) {
                String NMFORNECEDOR = rs.getString("NMFORNECEDOR");
                String CDCNPJFORNECEDOR = rs.getString("CDCNPJFORNECEDOR");



                NMFORNECEDOR = NMFORNECEDOR.trim();
                CDCNPJFORNECEDOR = CDCNPJFORNECEDOR.trim();



                Vector teste = new Vector();
                teste.addElement(NMFORNECEDOR);
                teste.addElement(CDCNPJFORNECEDOR);

                modelo.addRow(teste);



            }
            System.out.println(testeTabela.getRowCount());
            return testeTabela;
        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException ex) {
                    System.out.println(ex);
                }
            }
            if (pst != null) {
                try {
                    pst.close();
                } catch (SQLException ex) {
                    System.out.println(ex);
                }
            }
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException ex) {
                    System.out.println(ex);
                }
            }
        }
        return null;
    }
/**
 * Realiza uma consulta pelo maior numero de código de fornecedor e retorna este valor +1
 * @return
 */
            public static String ConsultaCodigo() {
                String codigo = "";
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = AbreConexao.getConexao();

            String query = "SELECT MAX(cdfornecedor)+1 AS col from FORNECEDOR";

            pst = con.prepareStatement(query);

            rs = pst.executeQuery();

            while (rs.next()) {
                codigo = rs.getString("col");

                codigo = codigo.trim();
            }

            return codigo;
        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            try {
                rs.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                pst.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                con.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }


        return null;
    }
/**
 * Realiza uma Consulta por cdfornecedor para preencher um objeto Fornecedor
 * @param s
 * @return
 */
                public Fornecedor ConsultaObjetoPorLinha(String s) {
        try {
            Connection con = AbreConexao.getConexao();

            PreparedStatement pst = con.prepareStatement("SELECT cdfornecedor, cdcnpjfornecedor, " +
                    "nmfornecedor, nmendereco, nmemail, cdtelefone from FORNECEDOR" +
                    " WHERE cdfornecedor = " + s + "");

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {

                String CDFORNECEDOR = rs.getString("CDFORNECEDOR");
                String CDCNPJFORNECEDOR = rs.getString("CDCNPJFORNECEDOR");
                String NMFORNECEDOR = rs.getString("NMFORNECEDOR");
                String NMENDERECO = rs.getString("NMENDERECO");
                String NMEMAIL = rs.getString("NMEMAIL");
                String CDTELEFONE = rs.getString("CDTELEFONE");

                CDFORNECEDOR = CDFORNECEDOR.trim();
                CDCNPJFORNECEDOR = CDCNPJFORNECEDOR.trim();
                NMFORNECEDOR = NMFORNECEDOR.trim();
                NMENDERECO = NMENDERECO.trim();
                NMEMAIL = NMEMAIL.trim();


                Fornecedor.getInstancia().setCDFORNECEDOR(CDFORNECEDOR);
                Fornecedor.getInstancia().setCDCNPJFORNECEDOR(CDCNPJFORNECEDOR);
                Fornecedor.getInstancia().setNMFORNECEDOR(NMFORNECEDOR);
                Fornecedor.getInstancia().setNMENDERECO(NMENDERECO);
                Fornecedor.getInstancia().setNMEMAIL(NMEMAIL);
                Fornecedor.getInstancia().setCDTELEFONE(CDTELEFONE);

          }

              return Fornecedor.getInstancia();

        } catch (SQLException e) {
            System.out.println(e);
        }

        return null;
    }


}
